import sympy as sp
from sympy import symbols, limit, Piecewise, Eq

def common_pitfalls():
    """
    演示极限运算中的常见误区
    """
    x = symbols('x')
    
    print("=" * 50)
    print("常见误区与注意事项")
    print("=" * 50)
    
    # 误区1：忽视除法法则条件
    print("\n1. 除法法则条件忽视")
    f = x**2 - 4
    g = x - 2
    try:
        # 直接应用除法法则会出错，因为lim(x→2)g(x)=0
        result = limit(f, x, 2) / limit(g, x, 2)
        print(f"错误做法: lim({f})/lim({g}) = {result}")
    except:
        print("直接除法法则失效：分母极限为0")
    
    # 正确做法
    correct_result = limit(f/g, x, 2)
    print(f"正确做法: lim[({f})/({g})] = {correct_result}")
    
    # 误区2：复合函数条件不满足
    print("\n2. 复合函数条件不满足的反例")
    # 定义函数
    u = symbols('u')
    f_u = Piecewise((2, Eq(u, 2)), (1, True))  # u=2时f(u)=2，否则f(u)=1
    g_x = 2  # 常值函数
    
    # 外层函数极限
    lim_f_u = limit(f_u, u, 2)
    
    # 复合函数极限
    composite = f_u.subs(u, g_x)
    lim_composite = limit(composite, x, 1)  # x=1是任意点
    
    print("内层函数g(x)=2，lim(x→1)g(x)=2")
    print("外层函数f(u)在u≠2时值为1，在u=2时值为2")
    print("lim(u→2)f(u)=1（因为u趋近2但不等于2时，f(u)=1）")
    print(f"但复合函数lim(x→1)f(g(x)) = {lim_composite}")
    print("所以lim(x→1)f(g(x))=2 ≠ lim(u→2)f(u)=1")
    print("这是因为在x=1的去心邻域内，恒有g(x)=2=u₀，不满足定理条件")
    
    # 误区3：未定式的错误处理
    print("\n3. 未定式的处理")
    indeterminate_form = (x**2 - 4) / (x - 2)
    print(f"未定式: lim(x→2)[({x**2-4})/({x-2})]")
    print("直接代入得0/0，需要化简:")
    simplified = (x**2 - 4) / (x - 2)
    print(f"化简: ({x**2-4})/({x-2}) = x+2 (当x≠2时)")
    final_limit = limit(simplified, x, 2)
    print(f"∴ 极限 = {final_limit}")

common_pitfalls()